// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

//
// This file is used by AsmOffsets.h to validate that our
// assembly-code offsets always match their C++ counterparts.
//
// NOTE: the offsets MUST be in hex notation WITHOUT the 0x prefix

PLAT_ASM_SIZEOF(340, ExInfo)
PLAT_ASM_OFFSET(0, ExInfo, m_pPrevExInfo)
PLAT_ASM_OFFSET(8, ExInfo, m_pExContext)
PLAT_ASM_OFFSET(10, ExInfo, m_exception)
PLAT_ASM_OFFSET(18, ExInfo, m_kind)
PLAT_ASM_OFFSET(19, ExInfo, m_passNumber)
PLAT_ASM_OFFSET(1C, ExInfo, m_idxCurClause)
PLAT_ASM_OFFSET(20, ExInfo, m_frameIter)
PLAT_ASM_OFFSET(338, ExInfo, m_notifyDebuggerSP)

PLAT_ASM_OFFSET(0, PInvokeTransitionFrame, m_FramePointer)
PLAT_ASM_OFFSET(8, PInvokeTransitionFrame, m_RIP)
PLAT_ASM_OFFSET(10, PInvokeTransitionFrame, m_pThread)
PLAT_ASM_OFFSET(18, PInvokeTransitionFrame, m_Flags)
PLAT_ASM_OFFSET(20, PInvokeTransitionFrame, m_PreservedRegs)

PLAT_ASM_SIZEOF(318, StackFrameIterator)
PLAT_ASM_OFFSET(10, StackFrameIterator, m_FramePointer)
PLAT_ASM_OFFSET(18, StackFrameIterator, m_ControlPC)
PLAT_ASM_OFFSET(20, StackFrameIterator, m_RegDisplay)
PLAT_ASM_OFFSET(308, StackFrameIterator, m_OriginalControlPC)
PLAT_ASM_OFFSET(310, StackFrameIterator, m_pPreviousTransitionFrame)

PLAT_ASM_SIZEOF(E8, PAL_LIMITED_CONTEXT)

PLAT_ASM_OFFSET(0, PAL_LIMITED_CONTEXT, FP)
PLAT_ASM_OFFSET(8, PAL_LIMITED_CONTEXT, RA)
PLAT_ASM_OFFSET(10, PAL_LIMITED_CONTEXT, A0)
PLAT_ASM_OFFSET(18, PAL_LIMITED_CONTEXT, A1)
PLAT_ASM_OFFSET(20, PAL_LIMITED_CONTEXT, S1)
PLAT_ASM_OFFSET(28, PAL_LIMITED_CONTEXT, S2)
PLAT_ASM_OFFSET(30, PAL_LIMITED_CONTEXT, S3)
PLAT_ASM_OFFSET(38, PAL_LIMITED_CONTEXT, S4)
PLAT_ASM_OFFSET(40, PAL_LIMITED_CONTEXT, S5)
PLAT_ASM_OFFSET(48, PAL_LIMITED_CONTEXT, S6)
PLAT_ASM_OFFSET(50, PAL_LIMITED_CONTEXT, S7)
PLAT_ASM_OFFSET(58, PAL_LIMITED_CONTEXT, S8)
PLAT_ASM_OFFSET(60, PAL_LIMITED_CONTEXT, S9)
PLAT_ASM_OFFSET(68, PAL_LIMITED_CONTEXT, S10)
PLAT_ASM_OFFSET(70, PAL_LIMITED_CONTEXT, S11)
PLAT_ASM_OFFSET(78, PAL_LIMITED_CONTEXT, SP)
PLAT_ASM_OFFSET(80, PAL_LIMITED_CONTEXT, IP)

PLAT_ASM_SIZEOF(208, REGDISPLAY)

PLAT_ASM_OFFSET(10, REGDISPLAY, SP)

PLAT_ASM_OFFSET(48, REGDISPLAY, pS1)
PLAT_ASM_OFFSET(90, REGDISPLAY, pS2)
PLAT_ASM_OFFSET(98, REGDISPLAY, pS3)
PLAT_ASM_OFFSET(A0, REGDISPLAY, pS4)
PLAT_ASM_OFFSET(A8, REGDISPLAY, pS5)
PLAT_ASM_OFFSET(B0, REGDISPLAY, pS6)
PLAT_ASM_OFFSET(B8, REGDISPLAY, pS7)
PLAT_ASM_OFFSET(C0, REGDISPLAY, pS8)
PLAT_ASM_OFFSET(C8, REGDISPLAY, pS9)
PLAT_ASM_OFFSET(D0, REGDISPLAY, pS10)
PLAT_ASM_OFFSET(D8, REGDISPLAY, pS11)
PLAT_ASM_OFFSET(40, REGDISPLAY, pFP)
PLAT_ASM_OFFSET(8, REGDISPLAY, pRA)
PLAT_ASM_OFFSET(108, REGDISPLAY, F)
